package com.example.myapplication.model

import com.google.gson.annotations.SerializedName
import java.text.SimpleDateFormat
import java.util.*

/**
 * 交易信号
 */
data class TradingSignal(
    val symbol: String,           // 股票代码
    @SerializedName("signal_type")
    val signalType: SignalType,   // 信号类型
    val strength: Int,            // 信号强度 (0-100)
    val price: Double,            // 当前价格
    @SerializedName("target_price")
    val targetPrice: Double?,     // 目标价格
    @SerializedName("stop_loss")
    val stopLoss: Double?,        // 止损价格
    val reason: String,           // 推荐理由
    val indicators: Map<String, Any> = emptyMap(), // 技术指标详情，默认为空Map
    val timestamp: Long = System.currentTimeMillis(), // 信号生成时间
    val signalTime: String = formatTime(System.currentTimeMillis()), // 格式化的信号时间
    @SerializedName("action_price")
    val actionPrice: Double? = null,  // 建议操作价格（买入/卖出价）
    @SerializedName("action_time")
    val actionTime: String? = null    // 建议操作时间
) {
    companion object {
        private fun formatTime(timestamp: Long): String {
            val sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA)
            return sdf.format(Date(timestamp))
        }
    }
    
    /**
     * 获取操作建议文本
     */
    fun getActionText(): String {
        return when (signalType) {
            SignalType.STRONG_BUY -> "强烈建议买入"
            SignalType.BUY -> "建议买入"
            SignalType.HOLD -> "建议持有"
            SignalType.SELL -> "建议卖出"
            SignalType.STRONG_SELL -> "强烈建议卖出"
        }
    }
    
    /**
     * 是否为买入信号
     */
    fun isBuySignal(): Boolean = signalType == SignalType.STRONG_BUY || signalType == SignalType.BUY
    
    /**
     * 是否为卖出信号
     */
    fun isSellSignal(): Boolean = signalType == SignalType.SELL || signalType == SignalType.STRONG_SELL
}

enum class SignalType {
    STRONG_BUY,    // 强烈买入
    BUY,           // 买入
    HOLD,          // 持有
    SELL,          // 卖出
    STRONG_SELL    // 强烈卖出
}

